namespace WeatherSystem.API.CQRS
{
    /// <summary>
    /// 命令接口（无返回值）
    /// </summary>
    public interface ICommand
    {
    }

    /// <summary>
    /// 命令接口（有返回值）
    /// </summary>
    public interface ICommand<out TResult>
    {
    }

    /// <summary>
    /// 命令处理器接口（无返回值）
    /// </summary>
    public interface ICommandHandler<in TCommand> where TCommand : ICommand
    {
        Task HandleAsync(TCommand command);
    }

    /// <summary>
    /// 命令处理器接口（有返回值）
    /// </summary>
    public interface ICommandHandler<in TCommand, TResult> where TCommand : ICommand<TResult>
    {
        Task<TResult> HandleAsync(TCommand command);
    }
}